var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees; // 返回 true
3 in trees; // 返回 true
6 in trees; // 返回 false

"bay" in trees; // 返回 false (必须使用索引号，而不是数组元素的值)

"length" in trees; // 返回 true (length 是一个数组属性)
// Symbol.iterator in trees; // 返回 true (数组可迭代，只在 ES2015+ 上有效)
// 内置对象
"PI" in Math; // 返回 true

// 自定义对象
var mycar = {
    make: "Honda", model: "Accord", year: 1998, zks: () => {
        console.log(555)
    }
};
"make" in mycar; // 返回 true
"model" in mycar; // 返回 true
"zks" in mycar;
console.log('Accord' in mycar) //false

// in 操作符 只能用来判断“属性名”是否存在于对象中，也就是只能判断是否存在某个“key”，不能判断 value 是否存在。

type finsh = { swim: () => void };
type bird = { fly: () => void };

type human = { swim?: () => void; fly: () => void };

function move(animal: finsh | bird | human) {
    if ("swim" in animal) {
        return (animal as finsh).swim();
    }
    return (animal as bird).fly();

}
